home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / share / hplip / base / dime.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2009-10-28  |  3KB  |  78 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import struct
  5. from g import *
  6. TYPE_T_MIME = 1
  7. TYPE_T_URI = 2
  8. DIME_VERSION = 1
  9. PAD_SIZE = 4
  10.  
  11. class Record(object):
  12.     
  13.     def __init__(self, id, typ, typ_code, payload):
  14.         self.id = id
  15.         self.typ = typ
  16.         self.typ_code = typ_code
  17.         self.payload = payload
  18.  
  19.  
  20.  
  21. class Message(object):
  22.     
  23.     def __init__(self):
  24.         self.records = []
  25.  
  26.     
  27.     def add_record(self, rec):
  28.         self.records.append(rec)
  29.  
  30.     
  31.     def generate(self, output):
  32.         for i, r in enumerate(self.records):
  33.             log.debug('Processing record %d (%s)' % (i, r.id))
  34.             mb = me = cf = 0
  35.             if i == 0:
  36.                 mb = 1
  37.             
  38.             if i == len(self.records) - 1:
  39.                 me = 1
  40.             
  41.             output.write(struct.pack('!B', (DIME_VERSION & 31) << 3 | (mb & 1) << 2 | (me & 1) << 1 | cf & 1))
  42.             output.write(struct.pack('!B', (r.typ_code & 15) << 4 & 240))
  43.             output.write(struct.pack('!H', 0))
  44.             id_len = self.bytes_needed(len(r.id))
  45.             output.write(struct.pack('!H', len(r.id)))
  46.             typ_len = self.bytes_needed(len(r.typ))
  47.             output.write(struct.pack('!H', len(r.typ)))
  48.             data_len = self.bytes_needed(len(r.payload))
  49.             output.write(struct.pack('!I', len(r.payload)))
  50.             if id_len:
  51.                 output.write(struct.pack('%ds' % id_len, r.id))
  52.             
  53.             if typ_len:
  54.                 output.write(struct.pack('%ds' % typ_len, r.typ))
  55.             
  56.             if data_len:
  57.                 output.write(struct.pack('%ds' % data_len, r.payload))
  58.                 continue
  59.         
  60.  
  61.     
  62.     def bytes_needed(self, data_len, block_size = PAD_SIZE):
  63.         if data_len % block_size == 0:
  64.             return data_len
  65.         return (data_len / block_size + 1) * block_size
  66.  
  67.  
  68. if __name__ == '__main__':
  69.     log.set_level('debug')
  70.     import cStringIO
  71.     m = Message()
  72.     m.add_record(Record('cid:id0', 'http://schemas.xmlsoap.org/soap/envelope/', TYPE_T_URI, '<test>test</test>'))
  73.     m.add_record(Record('test2', 'text/xml', TYPE_T_MIME, '<test>test2</test>'))
  74.     output = cStringIO.StringIO()
  75.     m.generate(output)
  76.     log.log_data(output.getvalue())
  77.  
  78.